package model

import (
	"manager/model/entity"
)

// BatteryCreateRequest 创建现场数据
type BatteryCreateRequest struct {
	BatteryCode string `json:"battery_code"`

	FirmwaresVersion string `json:"firmwares_version"`

	BatteryType int64 `json:"battery_type"`

	UpdatedAt int64 `json:"updated_at"`
}

// BatteryUpdateRequest 更新现场数据
type BatteryUpdateRequest struct {
	Id int64 `json:"id"`

	BatteryCode *string `json:"battery_code"`

	FirmwaresVersion *string `json:"firmwares_version"`

	BatteryType *int64 `json:"battery_type"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt *int64 `json:"updated_at"`
}

// BatteryListRequest 列表现场数据
type BatteryListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	Id int64 `json:"id"`

	BatteryCode *string `json:"battery_code"`

	FirmwaresVersion *string `json:"firmwares_version"`

	BatteryType *int64 `json:"battery_type"`

	UpdatedAt *int64 `json:"updated_at"`
}

// BatteryListResponse 列表回包数据
type BatteryListResponse struct {
	Total int            `json:"total"`
	List  []*BatteryInfo `json:"list"`
}

// BatteryInfoRequest 列表现场数据
type BatteryInfoRequest struct {
	Id int64 `json:"id"`

	BatteryCode *string `json:"battery_code"`

	FirmwaresVersion *string `json:"firmwares_version"`

	BatteryType *int64 `json:"battery_type"`

	UpdatedAt *int64 `json:"updated_at"`
}

// BatteryInfo 详细数据
type BatteryInfo struct {
	Id int64 `json:"id"`

	BatteryCode string `json:"battery_code"`

	FirmwaresVersion string `json:"firmwares_version"`

	BatteryType int64 `json:"battery_type"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// BatteryDeleteRequest 删除现场数据
type BatteryDeleteRequest struct {
	Id int64 `json:"id"`
}

// BatteryData 数据库表结构
type BatteryData struct {
	Id int64 `json:"id"`

	BatteryCode string `json:"battery_code"`

	FirmwaresVersion string `json:"firmwares_version"`

	BatteryTypeId int64 `json:"battery_type_id"`

	Name string `gorm:"column:name;type:VARCHAR(255)" json:"name"`

	Version string `gorm:"column:version;type:VARCHAR(255)" json:"version"`

	Voltage string `gorm:"column:voltage;type:VARCHAR(255)" json:"voltage"`

	Type int `gorm:"column:type;type:TINYINT" json:"type"`

	Supplier string `gorm:"column:supplier;type:VARCHAR(255)" json:"supplier"`

	Capacity string `gorm:"column:capacity;type:VARCHAR(255)" json:"capacity"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

// BatterysEntityToDto entity数据转换
func BatterysEntityToDto(batterys []*entity.Battery) []*BatteryInfo {
	out := make([]*BatteryInfo, 0, len(batterys))
	for _, c := range batterys {
		out = append(out, BatteryEntityToDto(c))
	}
	return out
}

// BatteryEntityToDto entity数据转换
func BatteryEntityToDto(e *entity.Battery) *BatteryInfo {
	return &BatteryInfo{

		Id: e.Id,

		BatteryCode: e.BatteryCode,

		FirmwaresVersion: e.FirmwaresVersion,

		BatteryType: e.BatteryType,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
